home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!husc6!rutgers!aramis.rutgers.edu!dartagnan.rutgers.edu!mcgrew
- From: mcgrew@dartagnan.rutgers.edu (Charles Mcgrew)
- Newsgroups: comp.sources.sun
- Subject: v01i022: Tooltool - a suntools user interface builder, Part 03/13
- Message-ID: <Jun.7.00.11.16.1989.23504@dartagnan.rutgers.edu>
- Date: 7 Jun 89 04:11:21 GMT
- Organization: Rutgers Univ., New Brunswick, N.J.
- Lines: 1364
- Approved: mcgrew@aramis.rutgers.edu
-
- Submitted-by: Chuck Musciano <chuck@trantor.harris-atd.com>
- Posting-number: Volume 1, Issue 22
- Archive-name: tooltool2.1c/part03
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 3 (of 13)."
- # Contents: samples/keytool.l samples/keytool.r.14.uu
- # samples/stopwatch.tt samples/vt100/newskeys.ras.uu
- # samples/vt100/term.c tooltool.c
- # Wrapped by chuck@melmac on Thu Jun 1 10:39:28 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'samples/keytool.l' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'samples/keytool.l'\"
- else
- echo shar: Extracting \"'samples/keytool.l'\" \(6797 characters\)
- sed "s/^X//" >'samples/keytool.l' <<'END_OF_FILE'
- X.TH SETWIN 1 "8 December 1988"
- X.SH NAME
- Xkeytool \- terminal emulator with interactively redefineable function keys
- X.SH SYNOPSIS
- X\fBkeytool\fP [\fB\(hyi\fP \fIinit_file\fP] \fIcommand\fP [\fIargs\fP]
- X.SH DESCRIPTION
- X.LP
- X\f2Keytool\fP is an interactive terminal emulator built with \f2tooltool\fP(1).
- XIt provides a tty subwindow environment similar to \f2shelltool\fP(1) for executing
- Xinteractive commands. This is very useful for running shell programs both locally
- X(such as \f2ssh\fP(1)) and remotely (using \f2rlogin\fP(1), or
- X\f2telnet\fP(1).
- X.LP
- X\f2Keytool\fP behaves very much like \f2shelltool\fP(1).
- XKeystrokes typed to \f2keytool\fP are passed to the program specified in \fIcommand\fP.
- X(\fICommand\fP must specify the full pathname of the program.)
- XIf this program is a shell, it accepts commands and runs programs in the usual way.
- XAny shelltool-like window arguments may be specified in \fIargs\fP.
- XThese are processed by tooltool and not sent to \fIcommand\fP. Any other \fIargs\fP
- Xare passed to the program.
- X.LP
- X\f2Keytool\fP accepts one command line option of its own, \fB\(hyi\fP, and this must be first
- Xin the command line. Its argument, \fIinit_file\fP, specifies the initial filename
- X\f2keytool\fP will read for function key definitions. The default is
- X~/.keytool if it exists, and /usr/local/lib/keytool.defaults if not.
- X.LP
- X\f2Keytool\fP allows definition of the function keys L2-L4, L9-L10, F1-F9,
- Xand R1-R15 with any combinations of CONTROL, SHIFT, and META. It also
- Xallows definition of any shifted combinations of the three mouse buttons
- Xexcept for one. CONTROL-SHIFT-META-RIGHT_MOUSE brings up the \f2keytool\fP
- Xmenu that is described below. The unshifted mouse buttons behave as in any
- Xtty subwindow: select, adjust, and tty subwindow menu.
- X.LP
- X\f2Keytool\fP has two complete sets of function key and mouse button
- Xdefinitions designated \fBprimary\fP and \fBsecondary\fP. These
- Xcould be used, for example, with one keyset for shell operation and the
- Xother for an editor.
- XThe \f2keytool\fP menu has entries to select either as the active
- Xkeyset. Also, pressing the CONTROL-SHIFT-META combination of any function
- Xkey that is not otherwise bound will toggle the active keyset, annunciating
- Xa single beep if the primary keyset becomes active and a double beep for
- Xthe secondary.
- X.SH KEYTOOL MENU
- X.LP
- XThe \f2keytool\fP menu invoked by CONTROL-SHIFT-META-RIGHT_MOUSE contains
- Xthese entries:
- X.IP "\f2Define Keys\fP"
- XBring up the \f2keytool\fP \fBkey definition window\fP, descibed below.
- X.IP "\f2Use Primary\fP"
- XDesignate the primary keyset as active.
- X.IP "\f2Use Secondary\fP"
- XDesignate the secondary keyset as active.
- X.IP "\f2Read Init File\fP"
- XRead the currently active initialization file, redefining all function
- Xkey and mouse button combinations.
- X.SH KEY DEFINITION WINDOW
- X.IP
- XThe \f2keytool\fP \fBkey definition window\fP allows any key to be
- Xredefined for immediate use. There is no need to edit ~/.keytool and
- Xrestart the application (as with shelltool and .ttyswrc). The key
- Xdefinition window is activated from the \f2keytool\fP menu described above.
- XIt may be moved around and left open without affecting the operation of the
- Xapplication window. Thus key definitions can be used or tested out as soon
- Xas they are typed in.
- X.IP "\f2Key Definition\fP"
- XThe text entry gadget in the bottom center of the window shows the current
- Xdefinition for the selected key. Directly to its left are choice gadgets
- Xfor selecting the key and shift combination to be defined. The definition
- Xcan be replaced or altered with any printing or non-printing ascii
- Xcharacters (except for the \fBline separator\fP and \fBitem separator\fP
- Xcharacters described below). A special font is used so that control characters
- Xare identifiable. Certain keys have special functions. TAB advances the
- Xactive text gadget within the key definition window. CONTROL-U deletes the
- Xentire line, and CONTROL-W deletes the last word. DELETE erase the last
- Xcharacter. To enter one of these characters into a key definition, a
- Xspecial button is provided to the right of the text entry gadget.
- X.IP
- XMouse button definitions may have tooltool \fIformat\fP specifications for
- Xup to two variables embedded in them. These will be replaced with the
- Xmouse cursor's X and Y character positions using 1,1 as the origin.
- XFor example, the definition "ESC5%c%c" will cause a mouse button to send
- X"ESC5", followed by the character with the value of the cursor's X position,
- Xfollowed by the character with the value of the cursor's Y position.
- X.IP "\f2Define Button\fP"
- XKey definitions do not take effect until the \fBdefine\fP button is
- Xselected. If the active key is changed without doing so, the definition is
- Xlost.
- X.IP "\f2Function Key Buttons\fP"
- XSurrounding the key definition window, there are buttons for each of the
- Xdefinable function keys and the mouse buttons. The active key for
- Xdefinition can be specified by selecting one of these buttons with the
- Xappropriate shift combination.
- X.IP "\f2Active Keyset\fP"
- XThis choice gadget allows selection of either the primary or secondary
- Xkeyset for both definition and use.
- X.IP "\f2Definition File\fP"
- XThis text gadget specifies filename to save or read key definitions from.
- XThe entry may be edited in the normal way (CONTROL-W, CONTROL-U, and DELETE).
- XIt does filename completion when SPACE is pressed.
- X.IP "\f2Item Separator\fP"
- X.IP "\f2Line Separator\fP"
- XKey definitions may contain any ascii characters \f2except\fP for two.
- X\f2Keytool\fP needs two special characters to separate definitions within
- Xthe definition file. The item and line separators may be specified as any
- Xascii characters that will not be used in key definitions. The defaults
- Xare TAB and NEWLINE, respectively. As with the key definition gadget
- Xa button is provided next to the separator text gadget for entering TAB,
- XCONTROL-U, CONTROL-W, or DELETE. Selecting the "\fISeparator\fP" text will
- Xtoggle between the two character definition fields.
- X.IP "\f2Save\fP"
- XThe \fBsave\fP button normally saves both keysets to the definition file.
- XShift combinations also allow loading key definitions from a file, copying
- Xeither keyset over the other, and setting the definition file gadget to the
- Xdefault filename (or the filename specified with the \fB\(hyi\fP command
- Xline option). This last fuction does \f2not\fP load key definitions.
- X.IP "\f2Done\fP"
- XThe \fBdone\fP button removes the key definition window from the screen. It
- Xcan be reopened from the \f2keytool\fP menu.
- X.SH AUTHOR
- X.LP
- XKen Laprade
- X.SH FILES
- X.LP
- X.br
- X~/.keytool
- X.br
- X/usr/local/lib/keytool.defaults
- X.SH "SEE ALSO"
- X.LP
- Xshelltool (1),
- Xtooltool (1)
- X.SH BUGS
- X.LP
- XDue to the size of the file that \f2tooltool\fP(1) must parse,
- X\f2keytool\fP takes an obnoxiously long time to start up.
- X
- END_OF_FILE
- if test 6797 -ne `wc -c <'samples/keytool.l'`; then
- echo shar: \"'samples/keytool.l'\" unpacked with wrong size!
- fi
- # end of 'samples/keytool.l'
- fi
- if test -f 'samples/keytool.r.14.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'samples/keytool.r.14.uu'\"
- else
- echo shar: Extracting \"'samples/keytool.r.14.uu'\" \(6527 characters\)
- sed "s/^X//" >'samples/keytool.r.14.uu' <<'END_OF_FILE'
- Xbegin 666 keytool.r.14
- XM 1X(8 ( ! ! +!0 ( @ $ 0"P4 " ( " $ L% @ " P ! +
- XM!0 ( @ 0 0"P4 " ( % $ L% @ " !@ ! +!0 ( @ < 0"P4 " (
- XM ( $ L% @ " "0 ! +!0 ( @ H 0"P4 " ( + $ L% @ " # ! +
- XM!0 ( @ T 0"P4 " ( . $ L% @ " #P ! +!0 ( @! 0"P4 " (
- XM 1 $ L% @ " $@ ! +!0 ( @!, 0"P4 " ( 4 $ L% @ " %0 ! +
- XM!0 ( @!8 0"P4 " ( 7 $ L% @ " & ! +!0 ( @!D 0"P4 " (
- XM : $ L% @ " &P ! +!0 ( @!P 0"P4 " ( = $ L% @ " '@ ! +
- XM!0 ( @!\ 0"P4 " ( @ $ L% @ " (0 ! +!0 ( @"( 0"P4 " (
- XM C $ L% @ " ) ! +!0 ( @"4 0"P4 " ( F $ L% @ " )P ! +
- XM!0 ( @"@ 0"P4 " ( I $ L% @ " *@ ! +!0 ( @"L 0"P4 " (
- XM L $ L% @ " +0 ! +!0 ( @"X 0"P4 " ( O $ L% @ " , ! +
- XM!0 ( @#$ 0"P4 " ( R $ L% @ " ,P ! +!0 ( @#0 0"P4 " (
- XM U $ L% @ " -@ ! +!0 ( @#< 0"P4 " ( X $ L% @ " .0 ! +
- XM!0 ( @#H 0"P4 " ( [ $ L% @ " / ! +!0 ( @#T 0"P4 " (
- XM ^ $ L% @ " /P ! +!0 ( @$ 0"P4 " (!! $ L% @ " 0@ ! +
- XM!0 ( @$, 0"P4 " (!$ $ L% @ " 10 ! +!0 ( @$8 0"P4 " (
- XM!' $ L% @ " 2 ! +!0 ( @$D 0"P4 " (!* $ L% @ " 2P ! +
- XM!0 ( @$P 0"P4 " (!- $ L% @ " 3@ ! +!0 ( @$\ 0"P4 " (
- XM!0 $ L% @ " 40 ! +!0 ( @%( 0"P4 " (!3 $ L% @ " 5 ! +
- XM!0 ( @%4 0"P4 " (!6 $ L% @ " 5P ! +!0 ( @%@ 0"P4 " (
- XM!9 $ L% @ " 6@ ! +!0 ( @%L 0"P4 " (!< $ L% @ " 70 ! +
- XM!0 ( @%X 0"P4 " (!? $ L% @ " 8 ! +!0 ( @&$ 0"P4 " (
- XM!B $ L% @ " 8P ! +!0 ( @&0 0"P4 " (!E $ L% @ " 9@ ! +
- XM!0 ( @&< 0"P4 " (!H $ L% @ " :0 ! +!0 ( @&H 0"P4 " (
- XM!K $ L% @ " ; ! +!0 ( @&T 0"P4 " (!N $ L% @ " ;P ! +
- XM!0 ( @' 0"P4 " (!Q $ L% @ " <@ ! +!0 ( @', 0"P4 " (
- XM!T $ L% @ " =0 ! +!0 ( @'8 0"P4 " (!W $ L% @ " > ! +
- XM!0 ( @'D 0"P4 " (!Z $ L% @ " >P ! +!0 ( @'P 0"P4 " (
- XM!] $ L% @ " ?@ ! +!0 ( @'\ 0"P4 " (" $ L% @ " @0 ! +
- XM!0 ( @(( 0"P4 " ("# $ L% @ " A ! +!0 ( @(4 0"P4 " (
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM
- XM 3[ 7%1<1#P !&J0D)#PD) 3JD)
- XM#PD)#@ $:I" @("08 !.J0D)"0D.
- XM3Z@(#@@(#P $^H" X(" @ !&J0@+"0D'
- XM 2:D)#PD)"0 #@0$! 4"@X*"@&!0<%!P )#0T+"PD (" @(" \
- XM 2:L.# H+"0 $BH" @(" \ &"0@("08 ."0D.
- XM"0D 2:D-#0L+"0 $:I"0D)"08 !.J0D.
- XM" @( 1JD)"0D-!@$ $ZI"0X*"0D !&
- XMJ0@& 0D& 7Z0$! 0$! $FI"0D)"08
- XM !1L0H*"@0$ 4;45%145"@ %&J"@0*"A$
- XM !1J@H$! 0$ 3Z$#!@P(#P #@@." X#@@. @X!@@(
- XM" 8 !(J 0$ @(! 3J(" @("#@ $2J
- XM ! H ? ! 0$! 0
- XM$! ! D)"0D $A(2?R0D_DA(2 $#A4
- XM5% P&!145#@0 !DE)AH$! L,E), ,$A(,"!2C(B89@
- XM @($" 0($! @(" @(! 0" 0 @$ @(! 0$! 0("! @
- XM 05#@X5! ! 0$/X0$! 8
- XM& @0( ?@ !@8 "! 0("! 0
- XM("! 0( #Q"0D9*4F)"0CP (&"@(" @(" @^ /$)"
- XM @0($"! ?@ #Q"0@(< @)"0CP $#!0D1(3^! 0$
- XM?D! 0'P" D)"/ #Q"0$!\0D)"0CP !^0@($! @($! 0
- XM /$)"0CQ"0D)"/ #Q"0D)"/@("0CP 8& !@8
- XM &!@ 8& @0( @0($"! (! (! ( !^
- XM?@ ! (! (! ($"! @0 #Q"0@($" @ @ 8)$).
- XM4E),0"(< &!@8)"0D0GY"0@ 'A$1$1X1$)"0GP \
- XM0D) 0$! 0D(\ >$1"0D)"0D)$> 'Y 0$!\0$! 0'X
- XM !^0$! ?$! 0$! /$)"0$!.0D)&.@ $)"0D)^0D)"0D(
- XM !\$! 0$! 0$!!\ '@0$! 0$!$1$. $)$2%!@<%A,
- XM1D( ! 0$! 0$! 0$!^ @H+&QJJJDI*"@@ $)B8E)2
- XM2DI&1D( \0D)"0D)"0D(\ ?$)"0D)\0$! 0 #Q"
- XM0D)"0D)"0CP0" 8 !\0D)"?$A$1$)" /$)"(!@$ D)"/
- XM /X0$! 0$! 0$! !"0D)"0D)"0D(\ 0D)"0B0D)!@8&
- XM (*"@I)45%0H*"@ !"0B0D&!@D)$)" @H)$1"@0$! 0
- XM$ 'X" @0($"! 0'X #P@(" @(" @(" @(#P " 0$ @(! 0
- XM" @$! ( / 0$! 0$! 0$! 0$/ &"1"
- XM /X " @$ @ X1 0\1$0Z
- XM0$! 7&)"0D)B7 #Q"0$! 0CP " @(Z1D)"0D8Z
- XM /$)"?D!"/ P2$!!\$! 0$! Z1D)"0D8Z
- XM D(\ 0$! 7&)"0D)"0@ @( #@(" @(" @ $! <! 0$
- XM! 0$!$0X 0$! 1$A0<$A$0@ #@(" @(" @(" @ #L
- XMDI*2DI*2 7&)"0D)"0@ #Q"0D)"0CP
- XM !<8D)"0F)<0$! 0 .D9"0D)&.@(" @( %QB0$! 0$
- XM \0D \ D(\ $! 0?! 0$! 2# $)"0D)"1CH
- XM !"0D(D)!@8 @H*2DI*2; $)")!@D
- XM0D( !"0B(D%!0("!!0( ?@0($"! ?@ #A 0$! 0
- XM8! 0$! 0#@ ! 0$! 0$ 0$! 0$! !P" @(" @&" @(" AP R
- XM6DP ."0D."0D &"0D)"08
- XM
- XB
- X
- Xend
- END_OF_FILE
- if test 6527 -ne `wc -c <'samples/keytool.r.14.uu'`; then
- echo shar: \"'samples/keytool.r.14.uu'\" unpacked with wrong size!
- fi
- # end of 'samples/keytool.r.14.uu'
- fi
- if test -f 'samples/stopwatch.tt' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'samples/stopwatch.tt'\"
- else
- echo shar: Extracting \"'samples/stopwatch.tt'\" \(7891 characters\)
- sed "s/^X//" >'samples/stopwatch.tt' <<'END_OF_FILE'
- X#define update_display(t) { tenths = t[0]; \
- X second_one = t[1]; \
- X second_ten = t[2]; \
- X minute_one = t[3]; \
- X minute_ten = t[4]; \
- X hour_one = t[5]; \
- X hour_ten = t[6]; \
- X }
- X
- X#define set_time(t) { t[0] = tenths; \
- X t[1] = second_one; \
- X t[2] = second_ten; \
- X t[3] = minute_one; \
- X t[4] = minute_ten; \
- X t[5] = hour_one; \
- X t[6] = hour_ten; \
- X }
- X
- X#define inc_time(a,b,c,d,e,f,g) { if (by_seconds) \
- X b = ++time[1]; \
- X else if ((a = ++time[0]) > 9) { \
- X a = time[0] = 0; \
- X b = ++time[1]; \
- X } \
- X if (time[1] > 9) { \
- X b = time[1] = 0; \
- X if ((c = ++time[2]) > 5) { \
- X c = time[2] = 0; \
- X if ((d = ++time[3]) > 9) { \
- X d = time[3] = 0; \
- X if ((e = ++time[4]) > 5) { \
- X e = time[4] = 0; \
- X if ((f = ++time[5]) > 9) { \
- X f = time[5] = 0; \
- X if ((g = ++time[6]) > 9) \
- X g = time[6] = 0; \
- X } \
- X } \
- X } \
- X } \
- X } \
- X }
- X
- X#define dec_time(a,b,c,d,e,f,g) { if (by_seconds) \
- X b = --time[1]; \
- X else if ((a = --time[0]) < 0) { \
- X a = time[0] = 9; \
- X b = --time[1]; \
- X } \
- X if (time[1] < 0) { \
- X b = time[1] = 9; \
- X if ((c = --time[2]) < 0) { \
- X c = time[2] = 5; \
- X if ((d = --time[3]) < 0) { \
- X d = time[3] = 9; \
- X if ((e = --time[4]) < 0) { \
- X e = time[4] = 5; \
- X if ((f = --time[5]) < 0) { \
- X f = time[5] = 9; \
- X if ((g = --time[6]) < 0) \
- X g = time[6] = 9; \
- X } \
- X } \
- X } \
- X } \
- X } \
- X }
- X
- X#define TINY_FONT "/usr/lib/fonts/fixedwidthfonts/screen.r.7"
- X#define MEDIUM_FONT "/usr/lib/fonts/fixedwidthfonts/screen.b.14"
- X#define BIG_FONT "/usr/lib/fonts/fixedwidthfonts/gallant.r.19"
- X
- X#define TRUE 1
- X#define FALSE 0
- X
- X#define ROW_1 4
- X#define ROW_2 17
- X#define ROW_3 39
- X
- Xapplication ""
- X size 0 by 200 pixels
- X label " << Stopwatch >>"
- X icon "stopwatch.icon"
- X initialize {
- X remove split_button;
- X remove resume_button;
- X remove stop_button;
- X display start_button;
- X display reset_button;
- X remove split_light;
- X in_split = FALSE;
- X time = tokenize("0 0 0 0 0 0 0");
- X }
- X
- X timer {
- X if (count_down) {
- X if (in_split)
- X dec_time(d,d,d,d,d,d,d)
- X else
- X dec_time(tenths, second_one, second_ten, minute_one, minute_ten, hour_one, hour_ten);
- X if (time == "0 0 0 0 0 0 0") {
- X interval = 0;
- X beep;
- X beep;
- X beep;
- X remove stop_button;
- X remove split_button;
- X display start_button;
- X if (!in_split)
- X display reset_button;
- X }
- X }
- X else if (in_split)
- X inc_time(d,d,d,d,d,d,d)
- X else
- X inc_time(tenths, second_one, second_ten, minute_one, minute_ten, hour_one, hour_ten);
- X }
- X
- Xgadgets
- X font MEDIUM_FONT
- X choice count_down
- X at 4 ROW_1
- X display current
- X "Up" : TINY_FONT nothing;
- X "Down": TINY_FONT nothing;
- X end_choice
- X label split_light
- X at 61 ROW_1
- X "Split" : TINY_FONT
- X end_label
- X choice by_seconds
- X at 110 ROW_1
- X display current
- X "0.1 sec" : TINY_FONT {
- X display decimal_point;
- X display tenths;
- X if (interval > 0)
- X interval = 0.1;
- X }
- X " 1 sec" : TINY_FONT {
- X remove decimal_point;
- X remove tenths;
- X tenths = time[0] = 0;
- X if (interval > 0)
- X interval = 1;
- X }
- X end_choice
- X choice hour_ten
- X at 16 ROW_2
- X display current
- X "0" : BIG_FONT nothing;
- X "1" : BIG_FONT nothing;
- X "2" : BIG_FONT nothing;
- X "3" : BIG_FONT nothing;
- X "4" : BIG_FONT nothing;
- X "5" : BIG_FONT nothing;
- X "6" : BIG_FONT nothing;
- X "7" : BIG_FONT nothing;
- X "8" : BIG_FONT nothing;
- X "9" : BIG_FONT nothing;
- X end_choice
- X choice hour_one
- X at 28 ROW_2
- X display current
- X "0" : BIG_FONT nothing;
- X "1" : BIG_FONT nothing;
- X "2" : BIG_FONT nothing;
- X "3" : BIG_FONT nothing;
- X "4" : BIG_FONT nothing;
- X "5" : BIG_FONT nothing;
- X "6" : BIG_FONT nothing;
- X "7" : BIG_FONT nothing;
- X "8" : BIG_FONT nothing;
- X "9" : BIG_FONT nothing;
- X end_choice
- X label
- X at 40 ROW_2
- X ":" : BIG_FONT
- X end_label
- X choice minute_ten
- X at 52 ROW_2
- X display current
- X "0" : BIG_FONT nothing;
- X "1" : BIG_FONT nothing;
- X "2" : BIG_FONT nothing;
- X "3" : BIG_FONT nothing;
- X "4" : BIG_FONT nothing;
- X "5" : BIG_FONT nothing;
- X end_choice
- X choice minute_one
- X at 64 ROW_2
- X display current
- X "0" : BIG_FONT nothing;
- X "1" : BIG_FONT nothing;
- X "2" : BIG_FONT nothing;
- X "3" : BIG_FONT nothing;
- X "4" : BIG_FONT nothing;
- X "5" : BIG_FONT nothing;
- X "6" : BIG_FONT nothing;
- X "7" : BIG_FONT nothing;
- X "8" : BIG_FONT nothing;
- X "9" : BIG_FONT nothing;
- X end_choice
- X label
- X at 76 ROW_2
- X ":" : BIG_FONT
- X end_label
- X choice second_ten
- X at 88 ROW_2
- X display current
- X "0" : BIG_FONT nothing;
- X "1" : BIG_FONT nothing;
- X "2" : BIG_FONT nothing;
- X "3" : BIG_FONT nothing;
- X "4" : BIG_FONT nothing;
- X "5" : BIG_FONT nothing;
- X end_choice
- X choice second_one
- X at 100 ROW_2
- X display current
- X "0" : BIG_FONT nothing;
- X "1" : BIG_FONT nothing;
- X "2" : BIG_FONT nothing;
- X "3" : BIG_FONT nothing;
- X "4" : BIG_FONT nothing;
- X "5" : BIG_FONT nothing;
- X "6" : BIG_FONT nothing;
- X "7" : BIG_FONT nothing;
- X "8" : BIG_FONT nothing;
- X "9" : BIG_FONT nothing;
- X end_choice
- X label decimal_point
- X at 112 ROW_2
- X "." : BIG_FONT
- X end_label
- X choice tenths
- X at 124 ROW_2
- X display current
- X "0" : BIG_FONT nothing;
- X "1" : BIG_FONT nothing;
- X "2" : BIG_FONT nothing;
- X "3" : BIG_FONT nothing;
- X "4" : BIG_FONT nothing;
- X "5" : BIG_FONT nothing;
- X "6" : BIG_FONT nothing;
- X "7" : BIG_FONT nothing;
- X "8" : BIG_FONT nothing;
- X "9" : BIG_FONT nothing;
- X end_choice
- X button start_button
- X at 4 ROW_3
- X normal "Start" {
- X interval = by_seconds? 1 : 0.1;
- X if (!in_split)
- X set_time(time);
- X remove start_button;
- X remove reset_button;
- X display stop_button;
- X if (!in_split)
- X display split_button;
- X }
- X end_button
- X button stop_button
- X at 4 ROW_3
- X normal "Stop" {
- X interval = 0;
- X remove stop_button;
- X remove split_button;
- X display start_button;
- X if (!in_split)
- X display reset_button;
- X }
- X end_button
- X button split_button
- X at 91 ROW_3
- X normal "Split" {
- X in_split = TRUE;
- X remove split_button;
- X display resume_button;
- X display split_light;
- X }
- X end_button
- X button resume_button
- X at 91 ROW_3
- X normal "Resume" {
- X in_split = FALSE;
- X remove resume_button;
- X remove split_light;
- X update_display(time);
- X if (interval > 0)
- X display split_button;
- X else
- X display reset_button;
- X }
- X end_button
- X button reset_button
- X at 91 ROW_3
- X normal "Reset" {
- X time = tokenize("0 0 0 0 0 0 0");
- X update_display(time);
- X }
- X end_button
- Xend_gadgets
- END_OF_FILE
- if test 7891 -ne `wc -c <'samples/stopwatch.tt'`; then
- echo shar: \"'samples/stopwatch.tt'\" unpacked with wrong size!
- fi
- # end of 'samples/stopwatch.tt'
- fi
- if test -f 'samples/vt100/newskeys.ras.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'samples/vt100/newskeys.ras.uu'\"
- else
- echo shar: Extracting \"'samples/vt100/newskeys.ras.uu'\" \(7089 characters\)
- sed "s/^X//" >'samples/vt100/newskeys.ras.uu' <<'END_OF_FILE'
- Xbegin 644 newskeys.ras
- XM6:9JE0 28 "& 0 $^0 !
- XM
- XM '________________________ !_____
- XM____________X 0 $ $ $ $ $ $ $
- XM 0 ! 0 0 0 0 0 0 0 ! $
- XM ! ! ! ! ! ! $ 0,,0< $2>0< $
- XM,1.< $,1",<< $,>,<,$<>,.,$<><>,0 !!))!( 1)!!( 1)(1( 1)(1
- XM))( 1)!))(1)!(1(1)!)!) $$$D$@!'G$$@!"%!$@!"%!$$D@ !"
- XM'$DD!$G$!"!$G$G$$ 06202 $200< $$<$< $$<(6<< $$0><0$<06$
- XM$$20<060 !!))!( 1)!! 1)(1 1)(A)1 1)!)1(11!(1(1)!1!)
- XM$##'G !$GGD !#$3D !#$4#$D !#'DDC!$GC#C!''DGC$ 0 $
- XM $ $ $ $ $ 0 ! 0 0
- XM0 0 0 0 0 ! $ ! ! ! !
- XM ! ! ! $ 0 $ $ $ $ $ $
- XM $ 0 ! 0 0 0 0 0 0 0
- XM ! $ ! ! ! ! ! ! ! $ 0
- XM $ $ $ $ $ $ 0 ! 0 0
- XM 0Q$)XQ P( 0 0 ! $ ! ! !$DA$$
- XMD CC!#B ! ! $ 0 $ $ $(4$<20$22$2$
- XM $ $ 0 ! 0 0 01PA!) M)(1)H 0
- XM0 ! $ ! ! !$DB$$D!#DA$A ! ! $ 0
- XM $ $ $,100,>"",$.( $ $ 0 ! 0
- XM 0 0 !P 0 0 ! $ ! ! !
- XM ! ! ! ! $ 0 $ $ $ $
- XM $ $ $ 0 ! 0 0 0 0 0 0
- XM 0 ! '________________________ !_________________
- XM\ 0 $ $ $ $ $ $ $ 0 !
- XM0 0 0 0 0 0 0 ! $ ! !
- XM ! ! ! ! ! $ 0<.< $<"1>1$<"<>,$<",00$
- XM $,>0>,$2< $,$<, $,0 !!(1( 1(1E!$1(1)!(1(1)! 0 1)!!
- XM!(1)( Q(1)( Q) $$A$@ !$A%7%1$A$G$!$A$D$! !"'$'$!$D@!#!$
- XMD@!#$ 02$< $2(305$2(<06$2(>00$ $$0000$2< $2$22 $20 !!(
- XM10 1(A%!L1(A1!(1(A)! 0 1)!!!(1) 1(1)( 1) $'#D@ !'$$7D
- XM1'$$GC!'$$GGA !#'GGC!#$ #C!'# #C$ 0 $ $ $
- XM $ $ $ $ 0 ! 0 0 0 0
- XM0 0 0 ! $ ! ! ! ! ! !
- XM ! $ 0 $ $ $ $ $ $ $ 0
- XM ! 0 0 0 0 0 0 0 ! $ !
- XM ! ! ! ! ! ! $ 0 $ $
- XM $ $ $ $ $ 0 !!QPY%\1Y%]P 1Y$(Q 1Y$(QP0
- XM P( 1\QP 1PQ]]% $$DA&1!$"A$@!$"A$D!$"A$DA CC!#B
- XM!!$D@ !$DA!&T 022$5$$<$$2 $<$$20$<$$22$$22$2$ $$22 $<2
- XM$$50 !!QP1,01 H1P 1 HAY 1 HAYP0M)(1)H 01)P 1)(015 $$%!
- XM$1!$$1% !$$2$D!$$2$D!!#DA$A !!$D !$DA!$4 002.1$$>1$2 $
- XM>102>$>1020$"",$.( $$,0 $<,$$10 ! 0 0 0
- XM 0!P 0 0 ! $ ! ! ! ! !
- XM ! ! $ 0 $ $ $ $ $ $
- XM $ 0 ! 0 0 0 0 0 0 0 !
- XM'________________________ !_________________\ 0 $
- XM $ $ $ ! 0 0
- XM0 0 $'#G ! $G !' G'C!' C$$!
- XM 02$2 $(22" $2$202$2$200$
- XM !!(1( 01)(0 1(1)Q 1(1)! 0
- XM $$A' ! DG" !$B'$%A$B'D$! 02$4
- XM $$20$ $2(402$2(200$ !!PY( 0@Q ( 1Q
- XM!)XP1Q!)YX0 $ ! ! !
- XM! 0 $ $ $ $
- XM ! 0 0 0 0
- XM $ ! ! ! ! 0
- XM $ $ $ $ ! 0
- XM 0 0 $ !''@G#' !
- XM ! # @ 0 $20$222 $ $".,$
- XM. ! 1)P1))( 0 01)(1(
- XM $ !'$"''G ! !"TDA$@
- XM 0 $40(024 $ $$.2$2 !
- XM1)Y!!)( 0 0((P0X $ !
- XM ! ! ' 0 $ $ $ $
- XM ! 0 0 0 0
- XM '________________________
- XM 0 $ $ $ $ !
- XM 0 0 0 0 $ !
- XM! ! 0<>,< $ <, $<"1>1$ >
- XM ( !!)!)( 0A)(( 1(1E H0!!1XQ0
- XM $$G$D@!!$DA !$A%7!! '&B$F@
- XM 0<0>2 $"22( $<(30*$ 02(<0
- XM !!1!)( 01)(0 10A%!$0!!(A! $$GDG !"
- XM'# @!$D$7D1 'DACD 0 $ $
- XM $ ! 0 0 0 0
- XM $ ! ! ! !
- XM 0 $ $ $ $
- XM ! 0 0 0 0 $
- XM ! ! ! 0 $
- XM $ !!QX))XP 1P)$ )(
- XM 0 P( $$D!$D$@ !$A&41$@ ! CC!#@
- XM 02<$><2 $2$5*$> $$22$2
- XM !!Q A)!X 1PA,0A( 0M)(1(
- XM$%$"$D$@ !%"$2B$@ !!#DA$@ 02>02>2
- XM $201102 $"",$. ! 0
- XM 0!P $ ! ! ! !
- XM 0 $ $ $ $
- XM !________________________P
- XM $ ! ! ! 0
- XM $ $ $ ! 0 0
- XM 0 $ ! ! !
- XM 0 $ $
- XM !!P)$ 0 1P)$ )X
- XM $$A&40! !$A&41$ 0
- XM2$51 $ $2$51$< !!PA-4 0
- XM 1PA-4A $%"$50! !%"$52$
- XM 0201* $ $201*00
- XM ! 0 0 0
- XM $ ! ! !
- XM 0 $ $ $ !
- XM0 0 0 $ !
- XM 0<"1 "2 $<"1 ">"2
- XM ," !!(1E$1( 1(1E$1 1( (XP0X
- XM $$A%41'@ !$A%41'!'@ !$DA$@
- XM 0<(35(2 $<(35(0(2 +22$2 !!0
- XMA%4A( 10A%4A A( 0Y(1( $$D$2D$@
- XM!$D$2D$$$@ @C!#@ 0 $
- XM < ! 0 0 0
- XM $ ! ! !
- XM ?_____\ '_____\
- XG
- X
- Xend
- END_OF_FILE
- if test 7089 -ne `wc -c <'samples/vt100/newskeys.ras.uu'`; then
- echo shar: \"'samples/vt100/newskeys.ras.uu'\" unpacked with wrong size!
- fi
- # end of 'samples/vt100/newskeys.ras.uu'
- fi
- if test -f 'samples/vt100/term.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'samples/vt100/term.c'\"
- else
- echo shar: Extracting \"'samples/vt100/term.c'\" \(8436 characters\)
- sed "s/^X//" >'samples/vt100/term.c' <<'END_OF_FILE'
- X /*
- X * vtem - A termcap driven VT100 emulator for BSD Unix
- X *
- X * $Header: /home/src/local/vttool/RCS/term.c,v 1.2 89/02/08 16:04:37 jqj Exp $
- X *
- X * $Log: term.c,v $
- X * Revision 1.2 89/02/08 16:04:37 jqj
- X * 1/ set vttype to indicate what type of termianl (VT52, VT100, or VT102)
- X * we can support
- X * 2/ don't do standout on terminals with standout glitches
- X * 3/ use appropriate padding on output
- X * 4/ clear to beginning of line must clear cursor too
- X * 5/ support for insert/delete character
- X * 6/ use "sr" rather than "up" to perform an upline-with-scroll. The spec.
- X * is unclear, but most existing termcap entries seem to work that way.
- X *
- X * Version 1.1
- X *
- X * Public domain software.
- X * Written by Leif Samuelsson (leif@erisun) in December, 1985
- X */
- X
- X
- X/* This module contains termcap and tty routines */
- X
- X#include "vtem.h"
- X
- Xextern char *tgetstr(), *tgoto();
- X
- Xenum vt_terminal vttype; /* the most powerful terminal we can support */
- X
- X/* Variables for saving original terminal parameters */
- Xstruct sgttyb oldb, newb;
- Xstruct tchars oldtchars, newtchars = { -1, -1, -1, -1, -1, -1 };
- Xstruct ltchars oldltchars, newltchars = { -1, -1, -1, -1, -1, -1 };
- Xint oldlb, newlb, oldl, newl;
- X
- X/* Terminal attributes */
- Xchar tbuf[1024];
- XBool BS;
- Xint CO, LI;
- Xchar *AL, *BC, *BL, *CB, *CD, *CL, *CE, *CM, *CR, *CS, *DC, *DL,
- X *DO, *EI, *IC, *IM,
- X *KE, *KS, *MB, *MD, *ME, *MR, *ND, *NL, *SE, *SO, *SR,
- X *TI, *TE, *UE, *UP, *US, *MAL, *MDL;
- X
- X/* putchar() is (usually) just a macro, so... */
- Xputchar_x(c)
- Xchar c;
- X{
- X putchar(c);
- X}
- X
- Xttycbreak()
- X{
- X ioctl(0, TIOCGETP, &oldb);
- X ioctl(0, TIOCGETC, &oldtchars);
- X ioctl(0, TIOCGETD, &oldl);
- X ioctl(0, TIOCGLTC, &oldltchars);
- X ioctl(0, TIOCLGET, &oldlb);
- X
- X newb = oldb;
- X newb.sg_flags |= CBREAK;
- X newb.sg_flags &= ~(CRMOD | ECHO);
- X ioctl(0, TIOCSETP, &newb);
- X ioctl(0, TIOCSETC, &newtchars);
- X ioctl(0, TIOCSLTC, &newltchars);
- X signal(SIGINT,SIG_IGN);
- X}
- X
- X
- X/* gettermtype - Finds terminal type and reads termcap entry for it.
- X */
- Xgettermtype()
- X{
- Xchar tptr[1024];
- Xchar *termtyp;
- Xchar *tbufptr;
- X
- X termtyp=getenv("TERM");
- X switch(tgetent(tptr,termtyp)) {
- X case -1:
- X printf("Can't read termcap\n");
- X exit(1);
- X case 0:
- X printf("Can't find your terminal type (%s) in termcap\n", termtyp);
- X exit(1);
- X }
- X tbufptr=tbuf;
- X AL = tgetstr("al", &tbufptr);
- X BC = tgetstr("bc", &tbufptr);
- X BL = tgetstr("bl", &tbufptr);
- X if (!BL)
- X BL = tgetstr("vb", &tbufptr);
- X if (!BL)
- X BL = "\007";
- X BS = tgetflag("bs",&tbufptr);
- X if (!BC && BS)
- X BC = "\b";
- X CB = tgetstr("cb", &tbufptr);
- X CD = tgetstr("cd", &tbufptr);
- X CL = tgetstr("cl", &tbufptr);
- X CE = tgetstr("ce", &tbufptr);
- X CM = tgetstr("cm", &tbufptr);
- X CR = tgetstr("cr", &tbufptr);
- X if (!CR)
- X CR = "\r";
- X CS = tgetstr("cs", &tbufptr);
- X DC = tgetstr("dc", &tbufptr);
- X DL = tgetstr("dl", &tbufptr);
- X DO = tgetstr("do", &tbufptr);
- X if (!DO)
- X DO = "\n";
- X EI = tgetstr("ei", &tbufptr);
- X if (EI && !*EI)
- X EI = NULL;
- X IC = tgetstr("ic", &tbufptr);
- X IM = tgetstr("im", &tbufptr);
- X if (!tgetflag("mi") || tgetflag("in") || (IM && !*IM))
- X IM = NULL;
- X KE = tgetstr("ke", &tbufptr);
- X KS = tgetstr("ks", &tbufptr);
- X MB = tgetstr("mb", &tbufptr); /* blink */
- X MD = tgetstr("md", &tbufptr); /* bold */
- X ME = tgetstr("me", &tbufptr); /* end all attributes */
- X MR = tgetstr("mr", &tbufptr); /* reverse-video */
- X ND = tgetstr("nd", &tbufptr);
- X NL = tgetstr("nl", &tbufptr);
- X if (!NL)
- X NL = "\n";
- X SO = tgetstr("so", &tbufptr);
- X SE = tgetstr("se", &tbufptr);
- X /* should also test tgetflag("ms") -- safe to move while standout */
- X if (tgetnum("sg") > 0 || /* attribute characters? */
- X tgetflag("xs")) /* standout not erased by overwrite */
- X SO = SE = MB = MD = MR = NULL;
- X SR = tgetstr("sr", &tbufptr);
- X TI = tgetstr("ti", &tbufptr);
- X TE = tgetstr("te", &tbufptr);
- X UE = tgetstr("ue", &tbufptr);
- X UP = tgetstr("up", &tbufptr);
- X US = tgetstr("us", &tbufptr);
- X if (tgetnum("ug") > 0) /* garbage characters on US/UE */
- X US = UE = 0;
- X MAL = tgetstr("AL", &tbufptr);
- X MDL = tgetstr("DL", &tbufptr);
- X if ((CO = tgetnum("co")) == 0) CO = 80;
- X if ((LI = tgetnum("li")) == 0) LI = 24;
- X if (!TI) {
- X TI = tgetstr("vs", &tbufptr);
- X TE = tgetstr("ve", &tbufptr);
- X }
- X
- X if (CO < 80 || LI < 24) {
- X printf("Sorry, but vtem requires 24 by 80 lines.\r\n");
- X exit(1);
- X }
- X if (!CM || !UP) {
- X printf("Sorry, but vtem requires cursor motion capabilities (cm,up,do,nd).\r\n");
- X exit(1);
- X }
- X if (!CL || !CD) {
- X printf("Sorry, but vtem requires clear screen capabilities (cl,cd).\r\n");
- X exit(1);
- X }
- X if (!(CS && SR) && !(DL && AL))
- X vttype = VT52; /* no scrolling capabilities */
- X else if (DC && (IC || (IM && EI)))
- X vttype = VT102; /* insert/delete char */
- X else
- X vttype = VT100; /* normal */
- X}
- X
- Xsetupterm(flg) /* If flg==TRUE, set line in cbreak mode and */
- XBool flg; /* initialize the terminal,otherwise restore */
- X{
- X if (flg) {
- X ttycbreak();
- X if (TI)
- X tputs_x(TI); /* start CM mode */
- X }
- X else {
- X if (KE)
- X tputs_x(KE); /* Restores Keypad */
- X if (TE)
- X tputs_x(TE); /* exit CM mode */
- X ioctl(0, TIOCSETP, &oldb);
- X ioctl(0, TIOCSETC, &oldtchars);
- X ioctl(0, TIOCSLTC, &oldltchars);
- X }
- X}
- X
- X/* clear_bos - clear from beginning of screen to cursor
- X * logical cursor is at (c,r) which may be past right edge of display
- X */
- Xclear_bos(c,r)
- Xint c,r;
- X{
- Xregister int i,j;
- X
- X for (i=0; i<r; i++) {
- X tputs_pad(tgoto(CM, 0, i),r);
- X if (CE)
- X tputs_x(CE);
- X else {
- X for (j=0; j < 80; j++)
- X putchar(' ');
- X }
- X }
- X clear_bol(c,r);
- X}
- X
- X/* clear_eos - Clear from cursor to end of screen.
- X */
- Xclear_eos()
- X{
- X tputs_pad(CD,LI);
- X}
- X
- X/* clear_bol - Clear from beginning of line to cursor.
- X * logical cursor is at (c,r) which may be past right edge of display
- X */
- Xclear_bol(c,r)
- Xint c,r;
- X{
- Xregister int i;
- X
- X if (CB) {
- X tputs_x(CB);
- X return;
- X }
- X tputs_x(tgoto(CM, 0, r));
- X if (c >= CO-1) {
- X cr();
- X clear_eol(0,r);
- X tputs_x(tgoto(CM, CO-1, r));
- X } else {
- X for (i=(r==LI-1)?c-1:c; i>=0; i--)
- X putchar(' ');
- X backspace();
- X }
- X}
- X
- X/* clear_eol - Clear from cursor to end of line.
- X * logical cursor is at (c,r) which may be past right edge of display
- X */
- Xclear_eol(c, r)
- Xint c, r;
- X{
- Xregister int i;
- X
- X if (CE)
- X tputs_x(CE);
- X else {
- X if (c >= CO)
- X return;
- X for (i=(r==LI-1)?CO-c-1:CO-c; i>0; i--)
- X putchar(' ');
- X tputs_x(tgoto(CM, c, r));
- X }
- X}
- X
- X
- Xcursor_up()
- X{
- X tputs_x(UP);
- X}
- X
- X
- Xcursor_down()
- X{
- X tputs_x(DO);
- X}
- X
- X
- Xcursor_right()
- X{
- X tputs_x(ND);
- X}
- X
- X
- Xreverse_lf()
- X{
- X if (SR)
- X tputs_x(SR); /* we hope. May not move cursor. */
- X else
- X cursor_up(); /* We hope. May not scroll up properly! */
- X}
- X
- X
- X/* start_reverse - Set terminal in reverse video mode.
- X */
- Xstart_reverse()
- X{
- X if (MR)
- X tputs_x(MR);
- X else
- X tputs_x(SO);
- X}
- X
- X
- Xstart_blink()
- X{
- X tputs_x(MB);
- X}
- X
- X
- Xstart_underline()
- X{
- X tputs_x(US);
- X}
- X
- X
- Xstart_bold()
- X{
- X if (MD)
- X tputs_x(MD);
- X else
- X tputs_x(SO);
- X}
- X
- X
- Xring_bell()
- X{
- X tputs_x(BL);
- X}
- X
- X
- X/* end_attributes - Reset terminal attributes to normal.
- X */
- Xend_attributes()
- X{
- X if (ME)
- X tputs_x(ME);
- X else {
- X tputs_x(SE);
- X tputs_x(UE);
- X }
- X}
- X
- X
- Xscroll_region(lin1, lin2, upward) /* Scroll region between lin1 and */
- Xint lin1, lin2; /* lin2 inclusive one line up or down */
- X{
- X /* Use scroll region if available - otherwise use insert/delete line*/
- X if (CS && SR) {
- X tputs_x(tgoto(CS,lin2,lin1));
- X if (upward) {
- X set_cursor(0,lin2);
- X tputs_x(NL);
- X }
- X else {
- X set_cursor(0,lin1);
- X tputs_x(SR);
- X }
- X tputs_x(tgoto(CS,23,0));
- X }
- X else if (DL && AL) {
- X if (upward) {
- X set_cursor(0,lin1);
- X tputs_pad(DL,LI-lin1);
- X set_cursor(0,lin2);
- X tputs_pad(AL,LI-lin2);
- X }
- X else {
- X set_cursor(0,lin2);
- X tputs_pad(DL,LI-lin2);
- X set_cursor(0,lin1);
- X tputs_pad(AL,LI-lin1);
- X }
- X }
- X}
- X
- Xdelete_char()
- X{
- X tputs_x(DC);
- X}
- X
- X/*
- X * register intention to start/end inserting
- X * (must also call insert_char() before each character actually written)
- X */
- Xset_insert_mode(onoff)
- XBool onoff;
- X{
- X if (IM && EI) {
- X if (onoff)
- X tputs_x(IM);
- X else
- X tputs_x(EI);
- X }
- X}
- X
- X
- X/*
- X * call to write any printing char while in insert mode
- X * (must call insert_mode(1) to start and insert_mode(0) to end insert mode)
- X */
- Xinsert_char(ch)
- Xchar ch;
- X{
- X if (IC && (!IM || !EI))
- X tputs_x(IC);
- X putchar(ch);
- X}
- END_OF_FILE
- if test 8436 -ne `wc -c <'samples/vt100/term.c'`; then
- echo shar: \"'samples/vt100/term.c'\" unpacked with wrong size!
- fi
- # end of 'samples/vt100/term.c'
- fi
- if test -f 'tooltool.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'tooltool.c'\"
- else
- echo shar: Extracting \"'tooltool.c'\" \(6455 characters\)
- sed "s/^X//" >'tooltool.c' <<'END_OF_FILE'
- X/************************************************************************/
- X/* Copyright 1988 by Chuck Musciano and Harris Corporation */
- X/* */
- X/* Permission to use, copy, modify, and distribute this software */
- X/* and its documentation for any purpose and without fee is */
- X/* hereby granted, provided that the above copyright notice */
- X/* appear in all copies and that both that copyright notice and */
- X/* this permission notice appear in supporting documentation, and */
- X/* that the name of Chuck Musciano and Harris Corporation not be */
- X/* used in advertising or publicity pertaining to distribution */
- X/* of the software without specific, written prior permission. */
- X/* Chuck Musciano and Harris Corporation make no representations */
- X/* about the suitability of this software for any purpose. It is */
- X/* provided "as is" without express or implied warranty. */
- X/* */
- X/* The sale of any product based wholely or in part upon the */
- X/* technology provided by tooltool is strictly forbidden without */
- X/* specific, prior written permission from Harris Corporation. */
- X/* Tooltool technology includes, but is not limited to, the source */
- X/* code, executable binary files, specification language, and */
- X/* sample specification files. */
- X/************************************************************************/
- X
- X
- X#include <stdio.h>
- X#include <ctype.h>
- X
- X#include <sys/file.h>
- X
- X#include "tooltool.h"
- X
- XEXPORT a_ptr tt_initial_action = NULL,
- X tt_timer_action = NULL,
- X tt_func_keys[MAX_KEY_SETS][MAX_FUNC_KEYS][MAX_SHIFT_SETS];
- X
- XEXPORT char *tt_application = NULL,
- X *tt_curr_file = "stdin",
- X *tt_icon = NULL,
- X *tt_program;
- X
- XEXPORT d_ptr tt_base_window = NULL;
- X
- XEXPORT int tt_mouse_base = 0,
- X tt_mouse_chars = TRUE,
- X tt_errors_occured = 0,
- X tt_normal_off = FALSE,
- X tt_function_off = FALSE,
- X tt_action_depth = 0,
- X tt_timer_pending = FALSE;
- X
- XEXPORT l_ptr tt_default_mark,
- X tt_default_nomark,
- X tt_default_cycle;
- X
- XEXPORT m_data tt_mouse[MAX_MOUSE_BUTTONS][MAX_SHIFT_SETS];
- X
- XEXPORT Menu tt_ttymenu = NULL;
- X
- XEXPORT struct pixfont *tt_default_font = NULL,
- X *tt_a_font = NULL;
- X
- XEXPORT s_ptr tt_mouse_x,
- X tt_mouse_y,
- X tt_delimiters;
- X
- XPRIVATE short mark_bits[] = {0x07C0,0x1830,0x2008,0x4384,0x4FE4,0x8FE2,0x9FF2,0x9FF2,
- X 0x9FF2,0x8FE2,0x4FE4,0x4384,0x2008,0x1830,0x07C0,0x0000};
- Xmpr_static(tt_mark_image, 15, 15, 1, mark_bits);
- X
- XPRIVATE short nomark_bits[] = {0x07C0,0x1830,0x2008,0x4004,0x4004,0x8002,0x8002,0x8002,
- X 0x8002,0x8002,0x4004,0x4004,0x2008,0x1830,0x07C0,0x0000};
- Xmpr_static(tt_nomark_image, 15, 15, 1, nomark_bits);
- X
- XPRIVATE short cycle_bits[] = {0x07C0,0x0FE0,0x1834,0x301C,0x601C,0x203C,0x0000,0x0000,
- X 0x7808,0x700C,0x7018,0x5830,0x0FE0,0x07C0,0x0000,0x0000};
- Xmpr_static(tt_cycle_image, 16, 16, 1, cycle_bits);
- X
- X/************************************************************************/
- X/* The main driver parses the specification file, builds the window, */
- X/* and starts up suntools to execute the user application. */
- X/************************************************************************/
- X
- X/************************************************************************/
- XPRIVATE check_args(argc, argv, n1, n2, v1, v2)
- X
- Xint *argc;
- Xchar **argv;
- Xchar *n1;
- Xchar *n2;
- Xint *v1;
- Xint *v2;
- X
- X{ int i, j;
- X
- X for (i = 1; i < *argc; i++)
- X if (strcmp(argv[i], n1) == 0 || strcmp(argv[i], n2) == 0) {
- X if (i + 1 < *argc)
- X *v1 = atoi(argv[i + 1]);
- X else
- X abend("missing argument after %s", argv[i]);
- X if (v2)
- X if (i + 2 < *argc)
- X *v2 = atoi(argv[i + 2]);
- X else
- X abend("missing argument after %s", argv[i]);
- X for (j = i + (v2? 3 : 2); j < *argc; j++, i++)
- X argv[i] = argv[j];
- X *argc -= (v2? 3 : 2);
- X argv[*argc] = NULL;
- X break;
- X }
- X}
- X
- X/************************************************************************/
- Xmain(argc, argv)
- X
- Xint argc;
- Xchar **argv;
- X
- X{ int i, j, k;
- X int force_height = -1, force_width = -1, force_rows = -1, force_cols = -1;
- X
- X tt_program = strsave(argv[0]);
- X
- X if (argc > 1 && strcmp(argv[1], POLLING_MAGIC_NUMBER) == 0) { /* is this a gross hack, or what? */
- X wait_for_window_size(atoi(argv[2]), atoi(argv[3]), POLLING_TIME_OUT);
- X execv(tt_full_path_of(argv[4], X_OK), &(argv[4]));
- X fprintf(stderr, "could not exec %s\n", argv[4]);
- X sleep(20);
- X exit(1);
- X }
- X
- X for (i = LEFT_KEY_SET; i < MAX_KEY_SETS; i++)
- X for (j = 0; j < MAX_FUNC_KEYS; j++)
- X for (k = 0; k < MAX_SHIFT_SETS; k++)
- X tt_func_keys[i][j][k] = NULL;
- X for (i = MOUSE_LEFT; i < MAX_MOUSE_BUTTONS; i++)
- X for (j = 0; j < MAX_SHIFT_SETS; j++)
- X tt_mouse[i][j].defined = MOUSE_UNDEFINED;
- X
- X if (argc >= 3 && strcmp(argv[1], "-f") == 0) {
- X if (freopen(tt_full_path_of(argv[2], R_OK), "r", stdin) == NULL)
- X abend("could not read %s", argv[2]);
- X else {
- X tt_curr_file = argv[2];
- X for (i = 3; i < argc; i++)
- X argv[i - 2] = argv[i];
- X argc -= 2;
- X }
- X }
- X check_args(&argc, argv, "-Ww", "-width", &force_cols, NULL);
- X check_args(&argc, argv, "-Wh", "-height", &force_rows, NULL);
- X check_args(&argc, argv, "-Ws", "-size", &force_width, &force_height);
- X
- X tt_default_font = pf_default();
- X tt_default_mark = tt_make_label(FALSE, NULL, NULL, &tt_mark_image);
- X tt_default_nomark = tt_make_label(FALSE, NULL, NULL, &tt_nomark_image);
- X tt_default_cycle = tt_make_label(FALSE, NULL, NULL, &tt_cycle_image);
- X tt_a_font = tt_default_font;
- X tt_base_window = tt_make_base_window();
- X tt_make_intrinsic_symbols();
- X yyparse();
- X if (tt_errors_occured)
- X abend("%d errors.", tt_errors_occured);
- X if (force_height != -1)
- X if (force_rows != -1 || force_cols != -1)
- X abend("conflict between window size command line options");
- X else {
- X tt_base_window->is_chars = FALSE;
- X tt_base_window->rows = force_height;
- X tt_base_window->columns = force_width;
- X }
- X else {
- X if (force_rows != -1)
- X if (tt_base_window->is_chars)
- X tt_base_window->rows = force_rows;
- X else
- X tt_base_window->rows = force_rows * charheight_of(tt_a_font);
- X if (force_cols != -1)
- X if (tt_base_window->is_chars)
- X tt_base_window->columns = force_cols;
- X else
- X tt_base_window->columns = force_cols * charwidth_of(tt_a_font);
- X }
- X if (tt_base_window->g_align == NO_ALIGN)
- X tt_base_window->g_align = ALIGN_TOP;
- X build_window(argc, argv);
- X window_main_loop(tt_base_window->frame);
- X exit(0);
- X}
- END_OF_FILE
- if test 6455 -ne `wc -c <'tooltool.c'`; then
- echo shar: \"'tooltool.c'\" unpacked with wrong size!
- fi
- # end of 'tooltool.c'
- fi
- echo shar: End of archive 3 \(of 13\).
- cp /dev/null ark3isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 13 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
-
- Chuck Musciano ARPA : chuck@trantor.harris-atd.com
- Harris Corporation Usenet: ...!uunet!x102a!trantor!chuck
- PO Box 37, MS 3A/1912 AT&T : (407) 727-6131
- Melbourne, FL 32902 FAX : (407) 727-{5118,5227,4004}
-